/-boot
/-docs
/-editor
/-files
/-files-old
/-imports
/-layout
/-shell
/-storage
/-tests
/-typings
Dom.ts
TypeScriptService.ts
functions.ts
ko.ts
nteapo.html
persistence.api.ts
persistence.ts
shell.ts
teapo.html
teapo.ts
tmp.ts
try.html
try.js
x
    }
92
    else
93
      return new Date().valueOf();
94
  }
95
​
96
  export function saveCurrentHtmlAsIs() {
97
    var blob: Blob = new (<any>Blob)(['<!doctype html>\n', document.documentElement.outerHTML], { type: 'application/octet-stream' });
98
    var url = URL.createObjectURL(blob);
99
    var a = document.createElement('a');
100
    a.href = url;
101
    a.setAttribute('download', 'nteapo.html');
102
    try {
103
      // safer save method, supposed to work with FireFox
104
      var evt_ = document.createEvent("MouseEvents");
105
      (<any>evt_).initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
106
      a.dispatchEvent(evt_);
107
    }
108
    catch (e) {
109
      a.click();
110
    }
111
  }
112
    
113
    
114
    
115
  export function addEventListener(element: any, type: string, listener: (event: Event) => void) {
116
    if (element.addEventListener) {
117
      element.addEventListener(type, listener);
118
    }
119
    else {
120
      var ontype = 'on' + type;
121
​
122
      if (element.attachEvent) {
123
        element.attachEvent('on' + type, listener);
124
      }
125
      else if (element[ontype]) {
126
        element[ontype] = listener;
127
      }
128
    }
129
  }
130
​
131
  export function addEventListenerWithDelay(element: any, type: string, listener: (event: Event) => void) {
132
    var queued = false;
133
    var storedEvent: Event;
134
​
135
    var listenerClosure = () => {
136
      queued = false;
137
      listener(storedEvent);
138
      storedEvent = null;
139
    };
140
​
141
    addEventListener(element, type, event => {
142
      storedEvent = event;
143
      if (!queued) {
144
        queued = true;
145
        if (typeof requestAnimationFrame === 'function')
146
          requestAnimationFrame(listenerClosure);
147
        else
148
          setTimeout(listenerClosure, 1);
149
      }
150
    });
151
  }
152
​
153
}
116:45